#ifndef _OI_PLSCANNERCORE_CORE_HPP_
#define _OI_PLSCANNERCORE_CORE_HPP_

#ifndef OI_PLSCANNER_CORE_API
#  ifdef OI_PLSCANNER_CORE_LIB
#    define OI_PLSCANNER_CORE_API __declspec(dllexport)
#  else
#    define OI_PLSCANNER_CORE_API __declspec(dllimport)
#  endif
#endif

#include <QtGui/QtGui>
#include <QtWidgets/QtWidgets>

namespace Oi
{
    namespace PLScannerCore
    {

        enum MaterialsType
        {
            MT_UnKnown = 0,
            MT_CALENDER = 1,
        };

        enum DefinitionType
        {
            DT_FullWidth = 0x0001,
            DT_HalfWidth = 0x0002,
            DT_OriginWidth = 0x0003,
            DT_SymRelativeWidth = 0x0004,
            DT_OriginAbsWidth = 0x0005,
            DT_TempleStandLine = 0x0006,
            DT_TempleReveseLie = 0x0007,
            DT_TempleStandPart = 0x0008,
            DT_TempleStandArcs = 0x0009,
            DT_TempleStandLineMark = 0x000A,
            DT_TempleReveseLieMark = 0x000B,
            DT_TempleStandPartMark = 0x000C,
            DT_TempleStandArcsMark = 0x000D,
            DT_Mutational = 0x1000,
        };

//         enum ResultCode
//         {
//             IC_UNKOWN = 0,
//             IC_SWITCH_FORMULAR,
//             IC_INSPECT_PASS = 9999,
//         };

        enum ProductMeasurePage
        {
            PMP_ThicknessMeasure = 0x0001,
            PMP_FixedMeasure = 0x0002,
            PMP_ALL = 0xffff,
        };

        enum MeasureType
        {
            MT_TotolWidth = 0x0001,
            MT_TotolThickness = 0x0002,
            MT_SideWidth = 0x0004,
            MT_SideThickness = 0x0008,
            MT_DefinitionWidth = 0x0010,
            MT_DefinitionThickness = 0x0020,
            MT_MeasureWidth = 0x0040,
            MT_MeasureThickness = 0x0080,
            MT_MeasurePrecision = 0x0100,
        };

        enum ToolType
        {
            TT_TotolWidth = 1000,
            TT_DefinitionTool = 0,
            TT_Precision = 20,
            TT_LeftSide = -999,
            TT_RightSide = +999,
            TT_MeasureThicknessTool = 100,
            TT_FixedPointMeasure = 200,
            TT_END = 300
        };

        enum ToolConfig
        {
            TC_WarningEnable = 0x0001,
            TC_ErrorEnable = 0x0002,
        };

        enum InspectParams
        {
            IP_Warning = 0,
            IP_Error,
        };

        OI_PLSCANNER_CORE_API QString InspectionString(int);

        OI_PLSCANNER_CORE_API bool InspectionPass(int);
    }
}

#endif